]> git.r.bdr.sh - rbdr/map/blobdiff - Map/Presentation/Base Components/MapTextEditor.swift
Add some debouncing
[rbdr/map] / Map / Presentation / Base Components / MapTextEditor.swift
index 2e4f279cd3d6ea0266a8d646479b31a1284f6601..ff982034d1681f5247ef83d5ec5f02ef7b556710 100644 (file)
@@ -89,10 +89,11 @@ class MapTextEditorController: NSViewController {
         textStorage.removeAttribute(
           .backgroundColor, range: NSRange(location: 0, length: textStorage.length))
 
-        for range in highlightRanges {
+        for (index, range) in highlightRanges.enumerated() {
           let nsRange = NSRange(range, in: textStorage.string)
 
-          textStorage.addAttribute(.backgroundColor, value: NSColor.Syntax.match, range: nsRange)
+          let color = index == selectedRange ? NSColor.Syntax.highlightMatch : NSColor.Syntax.match
+          textStorage.addAttribute(.backgroundColor, value: color, range: nsRange)
         }
 
         textView.needsDisplay = true
@@ -108,19 +109,10 @@ class MapTextEditorController: NSViewController {
           let range = highlightRanges[selectedRange]
           let nsRange = NSRange(range, in: textStorage.string)
           textView.scrollRangeToVisible(nsRange)
-          textView.selectedRange = nsRange
         }
       }
     }
   }
-
-  private func setSelectionColor() {
-    guard let textView = self.textView else { return }
-
-    var selectedTextAttributes = textView.selectedTextAttributes
-    selectedTextAttributes[.backgroundColor] = NSColor.yellow.withAlphaComponent(0.3)
-    textView.selectedTextAttributes = selectedTextAttributes
-  }
 }
 
 extension MapTextEditorController: NSTextViewDelegate {
@@ -259,6 +251,8 @@ struct MapTextEditor: NSViewControllerRepresentable {
     context: NSViewControllerRepresentableContext<MapTextEditor>
   ) {
     nsViewController.highlightRanges = highlightRanges
-    nsViewController.selectedRange = selectedRange
+    if nsViewController.selectedRange != selectedRange {
+      nsViewController.selectedRange = selectedRange
+    }
   }
 }